package com.jtny.nytb.equipment.vo.dataagorithm;

import cn.hutool.core.bean.BeanUtil;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.jtny.component.dto.CurrentUserDTO;
import com.jtny.component.entity.LocalHolder;
import com.jtny.component.enums.GenericStatusEnum;
import com.jtny.component.util.CurrentUserUtils;
import com.jtny.nytb.equipment.dto.dataalgorithm.DataAlgorithmDTO;
import lombok.Data;

import java.io.Serializable;

/**
 * @author 智慧能源中心 - 伍天宇
 * @package com.jtny.nytb.config.generic.dataalgorithm.vo
 * @fileName ExcelAlgorithmVO.java
 * @createTime 2023年11月13日 15:52
 * @Copyright© 2023 jtny
 * 江投能源技术研究院 版权所有
 */
@Data
@ExcelIgnoreUnannotated
public class ExcelAlgorithmVO implements Serializable {

    /**
     * 算法名
     */
    @ExcelProperty("算法名")
    @ColumnWidth(30)
    private String name;

    /**
     * 算法配置方案
     */
    @ExcelProperty("算法配置方案")
    @ColumnWidth(30)
    private String configurationScheme;

    /**
     * 小数点保留位数
     */
    @ExcelProperty("小数点保留位数")
    @ColumnWidth(30)
    @NumberFormat
    private Integer accuracyDigit;

    /**
     * 算法描述
     */
    @ExcelProperty("算法描述")
    @ColumnWidth(100)
    private String description;

    /**
     * 计算公式
     */
    @ExcelProperty("计算公式")
    @ColumnWidth(100)
    private String formula;

    /**
     * 脚本路径
     */
    @ExcelProperty("脚本路径")
    @ColumnWidth(100)
    private String scriptPath;

    /**
     * 请求方式
     */
    @ExcelProperty("请求方式")
    @ColumnWidth(30)
    private String requestType;

    public DataAlgorithmDTO toDataAlgorithmDTO(){
        DataAlgorithmDTO dataAlgorithmDTO = BeanUtil.copyProperties(this, DataAlgorithmDTO.class);
        dataAlgorithmDTO.setStatus(GenericStatusEnum.NORMAL.getValue());
        CurrentUserDTO currentUser = LocalHolder.getCurrentUser();
        CurrentUserUtils.setCreateDefaultField(dataAlgorithmDTO, currentUser);
        return dataAlgorithmDTO;
    }


}
